home *** CD-ROM | disk | FTP | other *** search
- package lib;
-
- use vars qw(@ORIG_INC);
- use Config;
-
- my $archname = $Config{'archname'};
-
- @ORIG_INC = @INC; # take a handy copy of 'original' value
-
-
- sub import {
- shift;
- foreach (reverse @_) {
- ## Ignore this if not defined.
- next unless defined($_);
- if ($_ eq '') {
- require Carp;
- Carp::carp("Empty compile time value given to use lib");
- # at foo.pl line ...
- }
- if (-e && ! -d _) {
- require Carp;
- Carp::carp("Parameter to use lib must be directory, not file");
- }
- unshift(@INC, $_);
- # Put a corresponding archlib directory infront of $_ if it
- # looks like $_ has an archlib directory below it.
- if (-d "$_/$archname") {
- unshift(@INC, "$_/$archname") if -d "$_/$archname/auto";
- unshift(@INC, "$_/$archname/$]") if -d "$_/$archname/$]/auto";
- }
- }
- }
-
-
- sub unimport {
- shift;
- my $mode = shift if $_[0] =~ m/^:[A-Z]+/;
-
- my %names;
- foreach(@_) {
- ++$names{$_};
- ++$names{"$_/$archname"} if -d "$_/$archname/auto";
- }
-
- if ($mode and $mode eq ':ALL') {
- # Remove ALL instances of each named directory.
- @INC = grep { !exists $names{$_} } @INC;
- } else {
- # Remove INITIAL instance(s) of each named directory.
- @INC = grep { --$names{$_} < 0 } @INC;
- }
- }
-
- 1;
-